package test;
import studentmanagement.Student;
import studentmanagement.Teacher;
import studentmanagement.Course;
public class TestSystem {
    public static void main(String[] args) {
        // 1. 创建教师（父类Person的子类）
        Teacher t1 = new Teacher("T001", "王老师", "男");
        Teacher t2 = new Teacher("T002", "刘老师", "女");


        // 2. 创建课程（增加容量参数）
        Course c1 = new Course("C001", "Java编程基础", "计算机教室101", "周一 9:00-11:00", 2); // 容量2人
        Course c2 = new Course("C002", "大学物理", "多媒体教室202", "周三 14:00-16:00", 10);

        // 3. 教师授课（测试多门课授课）
        t1.teach(c1);
        t2.teach(c2);
        t1.teach(c1); // 测试重复授课

        // 4. 创建学生（父类Person的子类）
        Student s1 = new Student("S001", "张三", "男");
        Student s2 = new Student("S002", "李四", "女");
        Student s3 = new Student("S003", "王五", "男"); // 用于测试课程容量

        // 5. 测试父类printInfo方法
        System.out.println("\n--- 人员基本信息 ---");
        s1.printInfo(); // 学生调用父类方法
        t1.printInfo(); // 教师调用父类方法

        // 6. 学生选课（测试容量控制）
        System.out.println("\n--- 选课操作 ---");
        s1.selectCourse(c1);  // 张三选Java（容量1/2）
        s2.selectCourse(c1);  // 李四选Java（容量2/2）
        s3.selectCourse(c2);  // 王五选物理（容量1/10）
        s1.selectCourse(c2);  // 张三选物理

        // 7. 学生退课
        System.out.println("\n--- 退课操作 ---");
        s1.dropCourse(c2);    // 张三退物理

        // 8. 展示学生选课情况
        System.out.println("\n--- 学生选课列表 ---");
        s1.showSelectedCourses();
        s2.showSelectedCourses();
        s3.showSelectedCourses();

        // 9. 展示教师授课情况
        System.out.println("\n--- 教师授课列表 ---");
        t1.showTeachingCourses();
        t2.showTeachingCourses();
    }
}